﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DTO;
using BUS;

namespace Cafe_htc
{
    public partial class Cafe_HTC : Form
    {
        public Cafe_HTC()
        {
            InitializeComponent();
        }

        TaiKhoanDTO taikhoan = new TaiKhoanDTO();

        KhuVucDTO khuvuc = new KhuVucDTO();
        List<KhuVucDTO> danhsachkhuvuc = new List<KhuVucDTO>();

        BanDTO ban = new BanDTO();
        List<BanDTO> danhsachban = new List<BanDTO>();

        MonDTO mon = new MonDTO();
        List<MonDTO> menu = new List<MonDTO>();

        DanhSachMonDTO dsmon = new DanhSachMonDTO();
        List<DanhSachMonDTO> danhsachmon = new List<DanhSachMonDTO>();

        int index = 0;

        private void HienThiDanhSachMon(BanDTO ban)
        {
            dgvDanhSachMon.Rows.Clear();
            danhsachmon = DanhSachMonBUS.LayDanhSachMon(ban);
            int count = danhsachmon.Count;
            for (int i = 0; i < count; ++i)
            {
                dgvDanhSachMon.Rows.Add(MonBUS.LayThongTinMon(danhsachmon[i].Mon.MaMon).TenMon, danhsachmon[i].SoLuong, danhsachmon[i].GhiChu);
            }
        }

        private void HienThiDanhSachBan(KhuVucDTO khuvuc)
        {
            dgvDSBan.Rows.Clear();
            danhsachban = BanBUS.LayDanhSachBan(khuvuc.MaKhuVuc);
            int count = danhsachban.Count;
            for (int i = 0; i < count; ++i)
                dgvDSBan.Rows.Add(danhsachban[i].TenBan, danhsachban[i].TinhTrang);
        }

        private void HienThiMenu()
        {
            dgvMenu.Rows.Clear();
            menu = MonBUS.LayDanhSachMon();
            int count = menu.Count;
            for (int i = 0; i < count; ++i)
            {
                dgvMenu.Rows.Add(menu[i].TenMon, menu[i].NhomMon, menu[i].Gia);
            }
        }
        private void HienThiKhuVuc()
        {
            danhsachkhuvuc = KhuVucBUS.LayDanhSachKhuVuc();
            cbxKhuVuc.DataSource = danhsachkhuvuc;
            cbxKhuVuc.DisplayMember = "TenKhuVuc";
        }

        private void Cafe_HTC_Load(object sender, EventArgs e)
        {
            // Mở kết nối với cơ sở dữ liệu!...
            bool moketnoi = ConnectionBUS.MoKetNoi();
            if (!moketnoi)
                MessageBox.Show("Kết nối với Cơ Sở Dữ Liệu không thành công!...>.<", "Lỗi!...", MessageBoxButtons.OK, MessageBoxIcon.Error);
            // Hiển thị Menu...
            HienThiMenu();

            // Hiển thị Khu Vực - Bàn...
            HienThiKhuVuc();

            cbxKhuVuc_SelectedValueChanged(sender, e);

            if (index == 0)
            {

                // Phân quyền cho người dùng...
                smiQuanLy.Enabled = false;
                smiTienIch.Enabled = false;
                smiDangNhap.Enabled = true;
                smiDangXuat.Enabled = false;

                groupBoxKhuVuc.Enabled = false;
                groupBoxThongTin.Enabled = false;
                groupBoxMenu.Enabled = false;
            }
            else
            {
                if (index == 1)
                {
                    // Phân quyền cho người dùng...
                    smiQuanLy.Enabled = false;
                    smiTienIch.Enabled = true;
                    smiDangNhap.Enabled = false;
                    smiDangXuat.Enabled = true;

                    groupBoxKhuVuc.Enabled = true;
                    groupBoxThongTin.Enabled = true;
                    groupBoxMenu.Enabled = true;
                }
                else
                {
                    // Phân quyền cho người dùng...
                    smiQuanLy.Enabled = true;
                    smiTienIch.Enabled = true;
                    smiDangNhap.Enabled = false;
                    smiDangXuat.Enabled = true;

                    groupBoxKhuVuc.Enabled = true;
                    groupBoxThongTin.Enabled = true;
                    groupBoxMenu.Enabled = true;
                }
            }
        }

        private void btnThem_Click(object sender, EventArgs e)
        {
            // Hiển thị form Thêm Món...
            ThemMon form = new ThemMon();
            form.ShowDialog();

            dsmon = form.LayThongTin();

            khuvuc = KhuVucBUS.LayThongTinKhuVuc(tbxKhuVuc.Text);
            dsmon.Ban = BanBUS.LayThongTinBan(tbxTenBan.Text, khuvuc);
            dsmon.Mon = MonBUS.LayThongTinMon(dgvMenu.CurrentRow.Cells[0].Value.ToString());

            DanhSachMonBUS.ThemMon(dsmon);

            // Cập nhật lại tình trạng của bàn này...
            if (dsmon.Ban.TinhTrang == "Trống")
                BanBUS.CapNhatTinhTrang(dsmon.Ban, "Có Khách");

            // Hiển thị lại danh sách bàn...
            HienThiDanhSachBan(khuvuc);

            // Hiển thị danh sách món cho bàn...
            HienThiDanhSachMon(dsmon.Ban);
        }

        private void btnTra_Click(object sender, EventArgs e)
        {
            if (dgvDanhSachMon.CurrentRow != null)
            {
                // Lấy thông tin của món được chọn trong danh sách món...
                mon = MonBUS.LayThongTinMon(dgvDanhSachMon.CurrentRow.Cells[0].Value.ToString());
                dsmon.Mon = mon;

                ban = BanBUS.LayThongTinBan(tbxTenBan.Text, KhuVucBUS.LayThongTinKhuVuc(tbxKhuVuc.Text));
                dsmon.Ban = ban;

                DanhSachMonBUS.TraMon(dsmon);

                // Cập nhật lại tình trạng của bàn này...
                danhsachmon = DanhSachMonBUS.LayDanhSachMon(ban);
                if (danhsachmon.Count == 0)
                    BanBUS.CapNhatTinhTrang(ban, "Trống");

                // Hiển thị lại danh sách bàn...
                HienThiDanhSachBan(KhuVucBUS.LayThongTinKhuVuc(tbxKhuVuc.Text));

                // Hiển thị danh sách món cho bàn...
                HienThiDanhSachMon(dsmon.Ban);
            }
        }

        private void cbxKhuVuc_SelectedValueChanged(object sender, EventArgs e)
        {
            // Hiển thị danh sách bàn...
            khuvuc = KhuVucBUS.LayThongTinKhuVuc(cbxKhuVuc.Text.ToString());
            HienThiDanhSachBan(khuvuc);

            // Hiển thị khu vực ở textbox Khu Vực...
            tbxKhuVuc.Text = khuvuc.TenKhuVuc;
        }

        private void dgvDSBan_SelectionChanged(object sender, EventArgs e)
        {
            // Hiển thị tên bàn ở textbox Tên Bàn...
            tbxTenBan.Text = dgvDSBan.CurrentRow.Cells[0].Value.ToString();

            // Hiển thị danh sách món cho bàn được chọn...
            ban = BanBUS.LayThongTinBan(tbxTenBan.Text, KhuVucBUS.LayThongTinKhuVuc(tbxKhuVuc.Text));
            HienThiDanhSachMon(ban);
        }

        private void đăngNhậpToolStripMenuItem5_Click(object sender, EventArgs e)
        {
            DangNhap form = new DangNhap();
            form.ShowDialog();

            taikhoan = form.TaiKhoan();
            if (taikhoan.MaTaiKhoan != -1)
            {
                if (taikhoan.LoaiTaiKhoan == "User")
                    index = 1;
                else
                    index = 2;

                lblUsername.Text = "Chào " + taikhoan.HoTen + "!...";

                Cafe_HTC_Load(sender, e);
            }
        }

        private void đăngXuấtToolStripMenuItem5_Click(object sender, EventArgs e)
        {
            index = 0;

            lblUsername.Text = "";

            Cafe_HTC_Load(sender, e);
        }

        private void thoátToolStripMenuItem5_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void nhậpĐơnĐặtChỗToolStripMenuItem4_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Chức năng này chưa được xử lý...^_^", "Thông báo!...", MessageBoxButtons.OK, MessageBoxIcon.Information);

            NhapDonDatCho form = new NhapDonDatCho();
            form.ShowDialog();
        }

        private void nhậpĐơnĐặtHàngToolStripMenuItem3_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Chức năng này chưa được xử lý...^_^", "Thông báo!...", MessageBoxButtons.OK, MessageBoxIcon.Information);

            NhapDonDatHang form = new NhapDonDatHang();
            form.ShowDialog();
        }

        private void xemĐơnĐặtHàngVàChỗToolStripMenuItem4_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Chức năng này chưa được xử lý...^_^", "Thông báo!...", MessageBoxButtons.OK, MessageBoxIcon.Information);

            XemDonDatChoVaHang form = new XemDonDatChoVaHang();
            form.ShowDialog();
        }

        private void xácNhậnĐơnĐặtHàngToolStripMenuItem4_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Chức năng này chưa được xử lý...^_^", "Thông báo!...", MessageBoxButtons.OK, MessageBoxIcon.Information);

            XacNhanDonDatChoVaHang form = new XacNhanDonDatChoVaHang();
            form.tctXacNhan.SelectedTab = (TabPage)form.tpgXacNhanDonDatHang;
            form.ShowDialog();
        }

        private void xácNhậnĐơnĐặtChỗToolStripMenuItem4_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Chức năng này chưa được xử lý...^_^", "Thông báo!...", MessageBoxButtons.OK, MessageBoxIcon.Information);

            XacNhanDonDatChoVaHang form = new XacNhanDonDatChoVaHang();
            form.tctXacNhan.SelectedTab = (TabPage)form.tpgXacNhanDonDatCho;
            form.ShowDialog();
        }

        private void quảnLýBảngGiáToolStripMenuItem4_Click(object sender, EventArgs e)
        {
            QuanLyBangGia form = new QuanLyBangGia();
            form.ShowDialog();

            // Hiển thị lại Menu...
            HienThiMenu();
        }

        private void quảnLýKhuVựcToolStripMenuItem4_Click(object sender, EventArgs e)
        {
            QuanLyKhuVuc form = new QuanLyKhuVuc();
            form.ShowDialog();

            // Hiển thị lại Khu Vực - Bàn...
            HienThiKhuVuc();

            cbxKhuVuc_SelectedValueChanged(sender, e);
        }

        private void phânQuyềnToolStripMenuItem4_Click(object sender, EventArgs e)
        {
            PhanQuyen form = new PhanQuyen();
            form.ShowDialog();

            lblUsername.Text = "Chào " + taikhoan.HoTen + "!...";
        }

        private void xemBáoCáoToolStripMenuItem4_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Chức năng này chưa được xử lý...^_^", "Thông báo!...", MessageBoxButtons.OK, MessageBoxIcon.Information);

            XemBaoCao form = new XemBaoCao();
            form.ShowDialog();
        }

        private void chươngTrìnhToolStripMenuItem9_Click(object sender, EventArgs e)
        {
            ChuongTrinh form = new ChuongTrinh();
            form.ShowDialog();
        }

        private void nhómPhátTriểnToolStripMenuItem4_Click(object sender, EventArgs e)
        {
            NhomPhatTrien form = new NhomPhatTrien();
            form.ShowDialog();
        }

        private void btnChuyen_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Chức năng này chưa được xử lý...^_^", "Thông báo!...", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }

        private void btnXinPhieuCheBien_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Chức năng này chưa được xử lý...^_^", "Thông báo!...", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }

        private void btnXuatHoaDon_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Chức năng này chưa được xử lý...^_^", "Thông báo!...", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }

        private void tbnGhepBan_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Chức năng này chưa được xử lý...^_^", "Thông báo!...", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }

        private void btnTachBan_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Chức năng này chưa được xử lý...^_^", "Thông báo!...", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
    }
}
